package AircraftDesignKg.entity;
import java.util.List;

import lombok.Data;

/**
 * 大模型输入请求体
 * Author: congwey
 */
@Data
public class DeepSeekRequest {

    /** 消息列表 */
    // 必填
    private List<Message> messages;

    /** 使用的模型名称 */
    // 必填
    private String model;

    /** 频率惩罚系数（-2.0到2.0） */
    private Double frequency_penalty;

    /** 最大返回token数 */
    private Integer max_tokens;

    /** 存在惩罚系数（-2.0到2.0） */
    private Double presence_penalty;

    /** 响应格式控制 */
    private ResponseFormat response_format;

    /** 停止生成标记（null/字符串/字符串列表） */
    private Object stop;

    /** 是否流式输出 */
    private Boolean stream;

    /** 流式输出配置（可为null） */
    private Object stream_options;

    /** 温度参数（0-2.0） */
    private Double temperature;

    /** 核心采样比例（0-1.0） */
    private Double top_p;

    /** 可用工具列表（null表示无） */
    private Object tools;

    /** 工具选择策略 */
    private String tool_choice;

    /** 是否返回概率信息 */
    private Boolean logprobs;

    /** 返回最高概率token数 */
    private Integer top_logprobs;

    /**
     * 消息实体
     */
    @Data
    public static class Message {

        /**
         * 消息角色
         * "system"：系统设置消息
         * "user"：用户输入
         * "assistant"：模型回复
         */
        private String role;

        /**
         * 消息文本内容
         * 示例："Hello! How can I assist you today? 😊"
         */
        private String content;

        public Message(String user, String s) {
            this.role = user;
            this.content = s;
        }
    }

    /**
     * 响应格式控制
     */
    @Data
    public static class ResponseFormat {

        /**
         * 响应格式类型
         * 示例："text" - 文本格式
         */
        private String type;
    }
}
